﻿﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp8
{
   
    class ProgramS
    {
            static float money1 = 0;
        static void Main(string[] args)
        {
           // Text1();
            Text2();






        }
            static void Text1() 
            {
            //         第一题：
            //        一个考试管理系统，需要录入考生成绩，只能录入数字，否则会报类型转换异常。
            //        请编写相关代码，
            //        1、捕获FormatException异常，并打印输出“异常已处理；
            //        2、捕获OverflowException异常，数值超出double范围的异常，并打印输出“异常已处理；
            //        3、捕获一般异常Exception异常。
            //        4、最终处理finally
            //        录入成绩结束后，请输出，总学生数，总分数，平均分。


            try
            {
                int num = 0;
                float avg = 0;
                float score = 0;
                float result = 0;

                float[] arr = new float[4];

                for (int i = 0; i < arr.Length; i++)
                {
                    Console.WriteLine("请输入第" + (i + 1) + "个学生的成绩：");
                    score = float.Parse(Console.ReadLine());
                    arr[i] = score;
                    num = i + 1;
                    result = result + score;
                }
                avg = result / num;

                Console.WriteLine("学生人数有{0}，总分数是{1}，平均分是{2}", num, result, avg);

            }
            catch (FormatException e)
            {


                Console.WriteLine("异常已处理");
                Console.WriteLine("{0},{1}", e.Message, e.StackTrace);
              
            }
            catch (OverflowException)
            {
                Console.WriteLine("异常已处理");
            }
            catch (Exception )
            {

            }
            finally
            {
                Console.WriteLine("goodby");
            }
        }

            static void Text2() 
             {

            //编写一个程序，用以接收用户输入的两个浮点型的数值，一个值表示用户想要存放在银行账户中的余额，
            //另一个值表示用户想要从银行账户中提取的金额。
            //实现存取款功能，
            //用户功能选择：1、存款，2、取款
            //取款时：
            //当用户想要提取的金额大于余额时，请手动抛出一个ArgumentOutOfRangeException 参数超出范围的异常，
            //异常信息可以写“取款金额大于余额，请重新输入”
            //，如此以确保取款金额始终不大于当前余额。
            //操作结束，打印输出余额是多少。
            //最后再添加catch一般异常 Exception，使得数据类型转换的异常也能被捕获到。

            Console.WriteLine("请输入 1、存款，2、取款");
            int key = int.Parse(Console.ReadLine());
            switch (key)
            {
                case 1:
                    try
                    {
                       
                        Console.WriteLine("请输入你要存款的金额：");
                        float money3 = float.Parse(Console.ReadLine());
                        Console.WriteLine("余额：{0}", money1+money3);
                        money1 = money1 + money3;
                        break;
                    }
                    finally 
                    {
                        Text2();
                    }

                case 2:
                    try
                    {
                        Console.WriteLine("请输入你要取款的金额：");
                        float money2 = float.Parse(Console.ReadLine());
                        if (money2 > money1)
                        {
                            throw new ArgumentOutOfRangeException("取款金额大于余额，请重新输入");
                        }
                        else
                        {
                            Console.WriteLine("取后的余额是：{0}", money1 - money2);
                        }
                    }
                    finally
                    {
                        Text2();
                    }

                    break;
                default:
                    Console.WriteLine("输入有误 请重新输入");
                    Text2();
                    break;
                }
            }



        }

        
    }

